package westeel.dataserver.service;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

public interface FreeQueryService {
    List query(String dataSourceName,String requestSQL) throws SQLException;
    void createDataSource(String name, Map<String,Object> properties) throws RuntimeException;
    void removeDataSource(String dataSourceName);
    long update(String dataSourceName, String sql) throws SQLException;

    /**
     * 使用sql或者语句名字查询数据
     * @param dataSourceName
     * @param sqlOrSqlKey - 每个sql可以定义一个Key,调试时使用sql真正用则使用Key
     * @param params
     * @return
     * @throws SQLException
     */
    List queryWithParams(String dataSourceName, String sqlOrSqlKey, Map params) throws SQLException;

    /**
     * 使用sql或者语句名字更新数据
     * @param dataSourceName
     * @param sqlOrSqlKey - 每个sql可以定义一个key,调试时使用sql真正用则使用Key
     * @param params
     * @return
     * @throws SQLException
     */
    long updateWithParams(String dataSourceName, String sqlOrSqlKey, Map params) throws SQLException;

    /**
     * 如果是系统数据源则报错
     * @param dataSourceName
     */
    void reportErrIfDataSourceIsSystem(String dataSourceName);

    /**
     * 获取系统数据源名字
     * @return
     */
    String getSystemDataSourceName();

    /**
     * 删除SQL
     * @param key
     * @return
     */
    long removeSql(String key) throws SQLException;

    long createSql(String key, String sql, String userGroup) throws SQLException;

    long updateSql(String key, String sql, String userGroup) throws SQLException;
}
